var path = []; // 存储可行路径上的方格
var w_, h_; // 用于画可行的路径

// 画出可行的路径
function drawPath() {
    noFill();
    stroke(242, 196, 56);
    strokeWeight(w_ / 2);
    beginShape();
    for (let i = 0; i < path.length; i++) {
      vertex(path[i].i * w_ + w_ / 2, path[i].j * h_ + h_ / 2);
    }
    endShape();
}

// 创建可行的路径
function createPath(current) {
    if(current) {
        path = [];
        let temp = current;
        path.push(temp);
        while (temp.previous) {
          path.push(temp.previous);
          temp = temp.previous;
        }
    }
}

// 本次作业需要完成该函数，用于探索迷宫中的可行路径
// current 表示当前访问的方格，类型为 Cell
// previous 表示在探索过程中的上一个方格，类型为Cell
async function traverseMaze(current, previous) {
    // 有用的代码片段:
    // 为实现动画效果，每探索一步需要等待一段时间:
    // await sleep(500);
    // 如果要用递归的形式调用traverseMaze函数，请在函数调用前加上 await:
    // await traverseMaze(<one cell>, <previous cell>);
    
    //答案
    if(current) {
        await sleep(500);
        current.previous = previous;
        current.visited = true;
        createPath(current);
        if(current === grid[grid.length - 1]) {
            return 1;
        } else if(await traverseMaze(current.getTop(), current)){
            return 1;
        } else if(await traverseMaze(current.getBottom(), current)) {
            return 1;
        } else if(await traverseMaze(current.getLeft(), current)) {
            return 1;
        } else if(await traverseMaze(current.getRight(), current)) {
            return 1;
        }
    }
    return 0;
    
}

async function traverseMaze(current, previous) {
    
}

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}